<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>

  <body>
    <script>
      class Father {
        constructor(x, y) {
          this.x = x;
          this.y = y;
          // this.sum();
        }
        sum() {
          console.log(this.x + this.y);
        }
      }

      class son extends Father {
        constructor(x, y) {
          // 在我们需要调用父类的方法时，必须把super关键字写在子类this的前面
          super(x, y);
          this.x = x;
          this.y = y;
          // this.say() //实例化对象时就要调用say方法
        }
        sub() {
          console.log(this.x - this.y);
        }
        say() {
          // es6的类没有变量提升，必须先定义类，再创建实例对象
          // ♥ 类中的共有属性和方法在访问时必须加this
          // 类里面的公共属性必须添加this
          console.log("hi");
        }
      }
      Father.prototype.add = function () {
        console.log("圆形");
      };
      //子类调用自己的方法，也能继承父亲的方法
      var son1 = new son(5, 3);
      son1.sum();

      // son1.sub()
    </script>
  </body>
</html>
